home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 426-450 / disk_438 / gadgeted / source / km_handler.c < prev    next >
C/C++ Source or Header  |  1992-05-06  |  8KB  |  197 lines

  1. /*----------------------------------------------------------------------*
  2.   km_handler.c Version 2.0  © Copyright 1990 Jaba Development
  3.  
  4.   Author : Jan van den Baard
  5.   Purpose: handling of menu and keyboard events
  6.  *----------------------------------------------------------------------*/
  7.  
  8. extern struct Menu        Titles[];
  9. extern struct Screen     *MainScreen;
  10. extern struct Window     *MainWindow;
  11. extern struct RastPort   *MainRP;
  12. extern struct GadgetList  Gadgets;
  13. extern USHORT             FrontPen, BackPen, GadgetCount, BackFill;
  14. extern BOOL               Saved, REQUESTER, WORKBENCH, WBSCREEN;
  15. extern UBYTE              wbb[20];
  16.  
  17. /*
  18.  * quit if the anwser is yes
  19.  */
  20. VOID quit()
  21. {
  22.     BOOL Quit = FALSE;
  23.  
  24.     if(Saved == FALSE)
  25.     {   if(Ask("Your work isn't saved !","Quit anyway ?") == TRUE)
  26.             Quit = TRUE;
  27.     }
  28.     else
  29.     {   if(Ask("Are you sure you","want to Quit ?") == TRUE)
  30.             Quit = TRUE;
  31.     }
  32.     if(Quit == TRUE) close_up(NULL);
  33. }
  34.  
  35. /*
  36.  * handle the menu events (drag selections possible)
  37.  */
  38. VOID handle_menus(menu_code)
  39.     USHORT menu_code;
  40. {
  41.     USHORT menu, item, sub, next_select;
  42.     struct MenuItem *select, *ItemAddress();
  43.  
  44.     while(menu_code != MENUNULL)
  45.     {   select = ItemAddress(&Titles[0],menu_code);
  46.         menu = MENUNUM(menu_code);
  47.         item = ITEMNUM(menu_code);
  48.         sub  = SUBNUM(menu_code);
  49.         switch(menu)
  50.         {   case 0: switch(item)
  51.                     {   case 0: About();
  52.                                 break;
  53.                         case 1: new();
  54.                                 break;
  55.                         case 2: ReadBinGadgets(FALSE);
  56.                                 break;
  57.                         case 3: WriteBinGadgets();
  58.                                 break;
  59.                         case 4: switch(sub)
  60.                                 {   case 0: WriteCGadgets();
  61.                                             break;
  62.                                     case 1: WriteAsmGadgets();
  63.                                             break;
  64.                                 }
  65.                                 break;
  66.                         case 5: preferences();
  67.                                 break;
  68.                         case 6: if(WORKBENCH == TRUE)
  69.                                 { if((WORKBENCH = (BOOL)OpenWorkBench()))
  70.                                   {   strcpy((char *)&wbb,"Close WorkBench");
  71.                                       ScreenToFront(MainScreen);
  72.                                   }
  73.                                   else Error("Can't open WorkBench !");
  74.                                 }
  75.                                 else
  76.                                 {   if((WORKBENCH = CloseWorkBench()))
  77.                                         strcpy((char *)&wbb,"Open WorkBench");
  78.                                     else Error("Can't close WorkBench !");
  79.                                 }
  80.                                 break;
  81.                         case 7: quit();
  82.                         break;
  83.                     break;
  84.                     }
  85.             break;
  86.             case 1: switch(item)
  87.                     {   case 0: move_gadget();
  88.                                 break;
  89.                         case 1: size_gadget();
  90.                                 break;
  91.                         case 2: copy_gadget();
  92.                                 break;
  93.                         case 3: delete();
  94.                                 break;
  95.                         case 4: edit();
  96.                                 break;
  97.                         case 5: switch(sub)
  98.                                 {   case 0: add_text(0);
  99.                                             break;
  100.                                     case 1: modify(0);
  101.                                             break;
  102.                                     case 2: text_delete(0);
  103.                                             break;
  104.                                     case 3: move_text(0);
  105.                                             break;
  106.                                 }
  107.                                 break;
  108.                         case 6: switch(sub)
  109.                                 {   case 0: render();
  110.                                             break;
  111.                                     case 1: sel_render();
  112.                                             break;
  113.                                     case 2: delete_images();
  114.                                             break;
  115.                                 }
  116.                                 break;
  117.                         case 7: do_cmap();
  118.                                 break;
  119.                         case 8: disable_window();
  120.                                 SetPalette(10,20,MainScreen);
  121.                                 enable_window();
  122.                                 break;
  123.                         case 9: refresh();
  124.                                 break;
  125.                         case 10: switch(sub)
  126.                                  { case 0: if(REQUESTER == FALSE) set_flags();
  127.                                            else { BackFill = BackPen; refresh(); }
  128.                                            break;
  129.                                    case 1: if(REQUESTER == FALSE) idcmp();
  130.                                            else add_text(2);
  131.                                            break;
  132.                                    case 2: if(REQUESTER == FALSE) add_text(1);
  133.                                            else modify(2);
  134.                                            break;
  135.                                    case 3: if(REQUESTER == FALSE) modify(1);
  136.                                            else text_delete(2);
  137.                                            break;
  138.                                    case 4: if(REQUESTER == FALSE) text_delete(1);
  139.                                            else move_text(2);
  140.                                            break;
  141.                                    case 5: move_text(1);
  142.                                            break;
  143.                                   }
  144.                                   break;
  145.                     }
  146.                     break;
  147.             case 2: FrontPen = (USHORT)item; break;
  148.             case 3: BackPen  = (USHORT)item; break;
  149.             default: break;
  150.             }
  151.     menu_code = select->NextSelect;
  152.     }
  153. }
  154.  
  155. /*
  156.  * handle the keyboard events
  157.  */
  158. VOID handle_keys(key_code,qualifier)
  159.     USHORT key_code, qualifier;
  160. {
  161.     if((key_code & IECODE_UP_PREFIX) != IECODE_UP_PREFIX)
  162.     {   switch(qualifier)
  163.         {   case IEQUALIFIER_RELATIVEMOUSE:
  164.             case IEQUALIFIER_RELATIVEMOUSE+IEQUALIFIER_CAPSLOCK:
  165.             switch(key_code)
  166.             {   case F1:   move_gadget();
  167.                            break;
  168.                 case F2:   size_gadget();
  169.                            break;
  170.                 case F3:   copy_gadget();
  171.                            break;
  172.                 case F4:   delete();
  173.                            break;
  174.                 case F5:   edit();
  175.                            break;
  176.                 case F6:   add_text(0);
  177.                            break;
  178.                 case F7:   render();
  179.                            break;
  180.                 case F8:   sel_render();
  181.                            break;
  182.                 case F9:   if(NOT WBSCREEN) do_cmap();
  183.                            break;
  184.                 case F10:  if(NOT WBSCREEN)
  185.                            {   disable_window();
  186.                                SetPalette(10,20,MainScreen);
  187.                                enable_window();
  188.                            }
  189.                            break;
  190.                 case HELP: refresh();
  191.                            break;
  192.             }
  193.             break;
  194.         }
  195.     }
  196. }
  197.